#include <iostream>
#include <math.h>
#include <string.h>
using namespace std;


struct group{
	int cost,num;
};


int main(){
	const int inf=0x7fffffff;
	int n,m;
	cin>>n>>m;
	group a[n];
	int dp[n+1][m+1];
//	memset(dp,0,sizeof(dp));
	for(int i=0;i<=n;i++)
		for(int j=0;j<=m;j++)
			dp[i][j] = inf;
	dp[0][1] = 0;
	for(int i=0;i<n;i++)
		cin>>a[i].num;
	for(int i=0;i<n;i++)
		cin>>a[i].cost;
	for(int i=1;i<=n;i++)
		for(int j=0;j<=m;j++)
			for(int k=0;k<=min(a[i-1].num,j);k++)
				dp[i][j] = k==0?dp[i-1][j]:min(dp[i][j],dp[i-1][(j+k-1)/k]!=inf?dp[i-1][(j+k-1)/k]+a[i-1].cost*k:inf);
//	for(int i=0;i<=n;i++){
//		for(int j=0;j<=m;j++)
//			cout<<(dp[i][j]==inf?-1:dp[i][j])<<" ";
//		cout<<endl;
//	}
	cout<<dp[n][m];
	return 0;
}
